package com.qst.rongxiaoserver.controller;

import com.qst.rongxiaoserver.common.Result;
import com.qst.rongxiaoserver.model.OrderModel;
import com.qst.rongxiaoserver.service.IOrderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

// 支付控制器
@RestController
@RequestMapping("/pay")
@Tag(name = "支付管理", description = "支付管理")
public class PayController {

    @Autowired
    IOrderService orderService;

    /**
     * 获取订单状态文本描述
     */
    private String getStatusText(Integer status) {
        switch (status) {
            case 0: return "待支付";
            case 1: return "已支付";
            case 2: return "已发货";
            case 3: return "已完成";
            case 4: return "已取消";
            case 5: return "退款中";
            case 6: return "已退款";
            default: return "未知状态";
        }
    }

    /**
     * 模拟支付处理过程
     * 在实际项目中，这里需要集成真实的支付SDK
     */
    private boolean processPayment(OrderModel order) {
        try {
            // 模拟支付请求延迟
            Thread.sleep(1000);

            // 模拟支付成功（实际项目中需要调用支付SDK）
            System.out.println("订单" + order.getOrderId() + "支付处理中，金额：" + order.getTotalPrice());

            // 支付成功返回true
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    // 根据订单发起支付
    @PostMapping("/order")
    @Operation(summary = "根据订单号发起支付", description = "根据订单号发起支付(服务层实现)")
    public Result payByOrder(@RequestParam String orderId) {
       OrderModel order =  orderService.lambdaQuery().eq(OrderModel::getOrderId, orderId).one();
        // SELECT * FROM tb_order WHERE order_id = '[orderId参数的值]' LIMIT 1;
        if (order == null) {
            return Result.fail("订单不存在");
        }
        // 调用第三方支付接口，发起支付
        // 假设第三方支付接口返回的是一个支付链接

        // 调用第三方支付接口，发起支付
        if (order.getStatus() !=0) {
            return Result.fail("订单状态异常，当前状态：" + getStatusText(order.getStatus()));
        }


      boolean success =   processPayment(order);
        if (success) {
            // 支付成功，更新订单状态
            order.setStatus(1);  // 已支付
            order.setPaymentStatus(2);  // 支付中
            orderService.updateById(order);
            return Result.success("支付成功");
        } else  {
            order.setStatus(3);
            order.setPaymentStatus(4);
            orderService.updateById(order);
            return Result.fail("支付失败");
        }

    }
}

